#include <iostream>

struct node {
    int i;
};

using namespace std;

namespace std {
template <> struct hash<struct node>
    {
                size_t operator()(const struct node &id) const noexcept
            {
                                cout << "begin to get a hash value!" << endl;
                                cout << "the key is:" << id.i << endl;
                                return hash<decltype(id.i)>()(id.i);
                                                    }
};
}
int main(int argc, const char *argv[])
{
    struct node mynode;
    cin >> mynode.i;
    hash<struct node>* myhash = new hash<struct node>();
    //cout << hash<struct node>()(mynode) << endl;
    cout << (*myhash)(mynode) << endl; 
    return 0;
}
